#一、根据输入数字，输出对应月份英文缩写
s= '''Jan Feb Mar Apr May Jun Jul
Aug Sep Oct Nov Dec'''
m = eval(input("请输入1—12的月份："))
n = s[4*(m-1):4*m:1]
print('月份缩写：',n)

#输出结果：请输入1—12的月份：1
#          月份缩写： Jan

#二、字符串
s='ABS'+'111'
print('字符串连接：',s)
s='a'*3
print('字符串复制：',s)
m= 'ab' in 'abcd'
print('判断ab是否为abcd的字串：',m)
n=r'\n'
print('原始字符',n)

#多行注释三个单引号或双引号
'''
字符串连接： ABS111
字符串复制： aaa
#判断ab是否为abcd的字串： True
#原始字符 \n
'''

#三、内置的字符串处理函数
s='asndasdna'
print('长度：',len(s))
m=123
print('转换为字符串：',str(m))
r = 65
print('转换成Unicode编码的字符串：',chr(r))
x= 'A'
print('返回字符x的Unicode编码：',ord(x))
print('a=',ord('a'),'z=',ord('z'),'A=',ord('A'),'Z=',ord('Z'))

#输出结果：
'''
长度： 9
转换为字符串： 123
转换成Unicode编码的字符串： A
返回字符x的Unicode编码： 65
a= 97 z= 122 A= 65 Z= 90
'''
# 四、内置的字符串处理方法:字符串查找类方法：find()、rfind()、index()、rindex()、count()
a='abcdemnopab'
b='ab'
print('find(b):',a.find(b))
print('find(ac):',a.find('ac'))
print('rfind(ab):',a.rfind('ab'))
print('index(ab):',a.find('ab'))
#print('index(cb):',a.index('cb')) 不存在抛出异常
print('rindex(ab):',a.rindex('ab'))
print('count(ab):',a.count('ab'))
print('count(ax):',a.count('ax'))

#输出结果：
'''
find(b): 0
find(ac): -1
rfind(ab): 9
index(ab): 0
rindex(ab): 9
count(ab): 2
count(ax): 0
'''
# 五、 内置的字符串处理方法:字符串分隔类方法：split()、rsplit()、partition()、rpartition()
s='luck, nice, beautife, good'
s1=s.split()
print('split(''):',s1)
print('split(","):',s.split(','))
print('rsplit(''):',s.rsplit())
h='luckly'
print('partition():',h.partition('l'))
print('rpartion()',h.rpartition('l'))
#输出结果：
'''
split(): ['luck,', 'nice,', 'beautife,', 'good']
split(","): ['luck', ' nice', ' beautife', ' good']
rsplit(): ['luck,', 'nice,', 'beautife,', 'good']
partition(): ('', 'l', 'uckly')
rpartion() ('luck', 'l', 'y')
'''

# 六、内置的字符串处理方法:字符串连接方法：join()
lists = ['hello','word','luck']
print('join1:',':'.join(lists))
print('join2:','-'.join(lists))
# 内置的字符串处理方法:大小写字符转换方法：lower()、upper()、capitalize()、title()、swapcase()
s='I am luckly'
print('lower(小写):',s.lower())
print('upper(大写):',s.upper())
print('capitalize(首字母大写)：',s.capitalize())
print('title(每个单词首字母大写)：',s.title())
print('swapcase(大小写互换):',s.swapcase())
#输出结果：
'''
join1: hello:word:luck
join2: hello-word-luck
lower(小写): i am luckly
upper(大写): I AM LUCKLY
capitalize(首字母大写)： I am luckly
title(每个单词首字母大写)： I Am Luckly
swapcase(大小写互换): i AM LUCKLY

'''

#七、内置的字符串处理方法:字符串替换方法：replace()
s='I am luck'
print('replace(替换):',s.replace("luck","luckly"))
# 删除字符串两端，右端或左端连续空白字符和指定字符方法：strip()、rstrip()、lstrip()。
h=' hell word '
print('strip():',h.strip())
print('rstrip():',h.rstrip())
print('lstrip():',h.lstrip())
g='======luck===='
print('删除两端指定字符：',g.strip('='))

#输出结果：
'''
replace(替换): I am luckly
strip(): hell word
rstrip():  hell word
lstrip(): hell word 
删除两端指定字符： luck
'''

#八、内置的字符串处理方法:判断字符串类型方法： isupper()、islower()、isdigit()、isalpha()、isalnum()
m='new year'
print('字符串是否为全小写：',m.islower())
print('字符串是否为全大写：',m.isupper())
print('字符串是否全为数字：',m.isdigit())
n='2021 happy new year'
print('判断字符串是否全为字母：',n.isalpha())
print('替换空格：',n.replace(' ',''))
n = n.replace(' ','')
print('判断字符串是否为数字或字母：',n.isalnum())#字符串中如果有空格返回结果为：false

#输出结果：
'''
字符串是否为全小写： True
字符串是否为全大写： False
字符串是否全为数字： False
判断字符串是否全为字母： False
替换空格： 2021happynewyear
判断字符串是否为数字或字母： True
'''

#九、内置的字符串处理方法:字符串排版方法：center()、ljust()、rjust()、zfill()
o='luck me'
print('字符串居中对齐输出11位不足以=填充：',o.center(11,'='))
print('"双引号："',o.center(11,"="))
print('字符串左侧对齐输出11位不足以*填充：',o.ljust(11,'*'))
print('字符串居右对齐输出11位不足以*填充：',o.rjust(11,'*'))
print('输出11位，不足在字符串左侧以0填充',o.zfill(11))

#输出结果：
'''
字符串居中对齐输出11位不足以=填充： ==luck me==
"双引号：" ==luck me==
字符串左侧对齐输出11位不足以*填充： luck me****
字符串居右对齐输出11位不足以*填充： ****luck me
输出11位，不足在字符串左侧以0填充 0000luck me
'''

# 十、字符串格式化：Python 支持格式化字符串的输出 ，将一个值插入到一个有字符串格式符 % 的字符串中。
print('%s今年%d岁了'%('小米',10))
name = '小米'
age = 10
print('%s今年%d岁了'%(name,age))
# 从Python2.6 开始，新增了一种格式化字符串的方法 str.format()，它增强了字符串格式化的功能，基本语法是通过“{}”和“：”来代替以前的“%”。
#format方法可以有多个输出项，位置可以按指定顺序。
print('{}今年{}岁了，上{}年级'.format('小米',10,3))
print('{0}今年{1}岁了，上{2}年级'.format('小米',10,3))
print('{2}今年{1}岁了，上{0}年级'.format('小米',10,3))
#输出结果：
'''
小米今年10岁了
小米今年10岁了
小米今年10岁了，上3年级
小米今年10岁了，上3年级
3今年10岁了，上小米年级
'''
# 十一、 当使用format方法格式化字符串的时候，需要在“{}”中首先输入“：”。“：”称为格式引导符。“：”之后分别设置<填充字符> <对齐方式> <宽度>。
print("{:=^10}".format('MIKE')) #居中对齐，宽度为10，不足=填充
print('{:=<10}'.format('MIKE'))
print('{:=>10}'.format('MIKE'))
#>>>>>>>>>
print('{:.2f}'.format(3.141592653))#结果保留两位小数
print('{:.4f}'.format(3.141592653))
print('{:5d}'.format(24))#居右对齐，宽度为5，不足空格填充，整数形式填充
print('{:<5d}'.format(24))

#输出结果：
'''
===MIKE===
MIKE======
======MIKE
3.14
3.1416
   24
24   
'''
# 十二、类型转换:如果算数运算符的操作数之一是浮点数，结果为浮点数即为类型转换
#:round(x[,ndigits])函数也可以对数字进行四舍五入转换为最近的整数
#:函数int 和round 都不会改变变量原来的值
print('浮点转为整形:',int(3.14))
print('整形转为浮点：',float(5))
# 无法转换：int（”3.4”)、int（”ab”); int()与eval()类似但eval（”3.4”)可以
#强制转换：强制类型转化是将表达式强制转换为所需的数据类型。

m =float(input('请输入圆周率：'))
print('圆周率：',m)
n = int(input('请输入半径：'))
print('半径：',n)

#输出结果:
'''
浮点转为整形: 3
整形转为浮点： 5.0
请输入圆周率：3
圆周率： 3.0
请输入半径：3
半径： 3
'''

#练习题：
# 一、判断回文数。用户输入一个四位数，如果是回文数显示True,
  #不是则显示False
  # 回文数就是反过来的数字与正着的数字是相同的。如1221

a=eval(input('请输入一个4位数：'))
a=str(a)
b = a[::-1]
print('a:=',a)
print('b=',b)
print('判断输入数字是否为回文数：',a in b)

#输出结果：
'''
请输入一个4位数：1234
a:= 1234
b= 4321
判断输入数字是否为回文数： False
'''
# 二、给出字符串strings=‘ababaabbbaba’。写一个表达式，去除其中所有‘b’，得到另一个字符串newstring=‘aaaaaa’。
s='ababaabbbaba'
h = s.replace('b','')#将所有b替换为空
print('去除b后的字符串：',h)
#输出结果：
'''
去除b后的字符串： aaaaaa
'''
#   三、 字符串S长度为偶数：
#（a）写出显示前半段字符串的表达式。 
#（b）写出显示后半段字符串的表达式
S=input('请输入一个偶数位的字符串：')
print('S=',S)
a =S[0:len(S)//2:1]
print('前半段：a=',a)
b=S[len(S)//2:len(S):1]
print('后半段：b=',b)

#输出结果：
'''
请输入一个偶数位的字符串：aabb
S= aabb
前半段：a= aa
后半段：b= bb
'''







